package index;


import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.TreeMap;

/** 
 * Les objets Term contiennent pour un identifiant donné le texte associé, et pour chaque document, la fr�quence du terme dans le document
 *  
 * */

public final class Term {
  
  /** id du terme */
  public int term_id;
  /** texte du terme*/
  public String text;


  /** TreeMap contenant des objets TermFrequency
  * @see TermFrequency
  */
  public TreeMap frequency;
  public  List<PositionDoc> positionDoc;

 /** Default constructor*/
 public Term() {
 }
 
 /** 
 * Construit un nouveau terme
 * @param text the Term text
 */
 public Term(String text) {
  this.text=text;       
 }

  /**
  * Construuit un nouveau terme
  * @param id identifiant du terme
  * @param text texte du terme
  * @param frequency TreeMap contenant des objets TermFrequency
  * @see TermFrequency
  */
 // public Term(int id, String text, int freq, int doc_nb,  TreeMap frequency) {
 /*public Term(int id, String text,  TreeMap frequency) {
  this.term_id=id;
  this.text =text;
//  this.freq = freq;
 // this.doc_count = doc_nb;
  this.frequency = new TreeMap();
  this.frequency = frequency;

  
  } */ 
 //Term()

 
 /**
  * Construuit un nouveau terme avec liste position doc
  * @param id identifiant du terme
  * @param text texte du terme
  * @param frequency TreeMap contenant des objets TermFrequency
  * @see TermFrequency
  */

 public Term(int id, String text,  TreeMap frequency) {
  this.term_id=id;
  this.text =text;
//  this.freq = freq;
 // this.doc_count = doc_nb;
  this.frequency = new TreeMap();
  this.frequency = frequency;
  
  this.positionDoc = new ArrayList<PositionDoc>() ;
  }
 
 
 
 
 
 /**
  * Construuit un nouveau terme avec liste position doc
  * @param id identifiant du terme
  * @param text texte du terme
  * @param frequency TreeMap contenant des objets TermFrequency
  * @see TermFrequency
  * @see PositionDoc
  */

 public Term(int id, String text,  TreeMap frequency, List<PositionDoc> positionDoc) {
  this.term_id=id;
  this.text =text;
//  this.freq = freq;
 // this.doc_count = doc_nb;
  this.frequency = new TreeMap();
  this.frequency = frequency;
  
  this.positionDoc = new ArrayList<PositionDoc>() ;
  this.positionDoc = positionDoc;
  }
  
 
 /**ajoute une position doc à la liste
 * @return 
  * @see PositionDoc
  */

 public void addPositionDoc (PositionDoc positionDoc) {
  this.positionDoc.add(positionDoc);
  }

 /**ajoute une position doc à la liste
 * @return 
  * @see PositionDoc
  */
 public void addPositionDoc (int doc_id, int term_id, int position, int bal_id) {
  PositionDoc posDoc = new PositionDoc(doc_id, term_id, position, bal_id);
  this.positionDoc.add(posDoc);
  }
  
 
 
  
  /**
  * Prints a Term object
  */
  public void PrintTerm() {
          
  System.out.print("Term :");
  System.out.print(term_id+"\t"+text);
 // System.out.print("\t"+this.freq+"\t"+this.doc_count+"\t "+"\t");

          for (Iterator it = frequency.keySet().iterator(); it.hasNext(); ){
                TermFrequency tempTermFrequency=new TermFrequency();
               tempTermFrequency = (TermFrequency) frequency.get(it.next());
                tempTermFrequency.PrintTermFrequency();
           }  
  			
  		for (Iterator it = positionDoc.iterator(); it.hasNext(); ) {
  			PositionDoc tempPosDoc = (PositionDoc) it.next();
  			tempPosDoc.PrintPositionDoc();
  		}
  System.out.println();
  		
          
  } //PrintTerm()
  
  
} //Term.java
